package com.example.demo.study.lambda;


/**
 * Java 8 允许你使用 :: 关键字来传递方法(静态方法和非静态方法)
 */
public class LambdaTest3 {
    public static void main(String[] args) {
        LambdaTest3 lambdaTest3 = new LambdaTest3();

        //使用Lambda引用类的静态方法
        //能引用Integer类中的静态方法toBinaryString的原因是:
        //Action3接口中只有一个方法且方法的参数类型和返回值类型
        //与Integer类中的静态方法toBinaryString的参数类型、返回类型是一致的

        Action3 action3 = Integer::toBinaryString;
        System.out.println(action3.run(4));

        //使用Lambda引用对象的非静态方法
        //能引用对象t中的非静态方法test的原因是和上面的描述是一致的

        Action3 action31 = lambdaTest3::test;
        System.out.println(action31.run(4));
    }

    public String test(int i){
        return "i = " + i;
    }
}

@FunctionalInterface
interface Action3{
    public String run(int Integer);
}